Skill
আনসিবল (Ansible)

ভ্যারিয়েবল এবং ফ্যাক্ট

Latest Technologies - আনসিবল (Ansible) - NCTB BOOK

Ansible এ ভ্যারিয়েবল (Variables) এবং ফ্যাক্ট (Facts) হলো দুটি গুরুত্বপূর্ণ উপাদান যা প্লেবুক, টেমপ্লেট, এবং রোলগুলোকে ডায়নামিক এবং ফ্লেক্সিবল করে তোলে। চলুন এই দুটি সম্পর্কে বিস্তারিতভাবে আলোচনা করি।

১. ভ্যারিয়েবল (Variables)

ভ্যারিয়েবল হলো ডায়নামিক ডেটা বা মান, যা Ansible Playbook বা টাস্কে ব্যবহৃত হয়। এর মাধ্যমে আপনি একই প্লেবুক বা টাস্ককে বিভিন্ন কনফিগারেশনে চালাতে পারেন, ভিন্ন ভিন্ন সার্ভারে ভিন্ন ভিন্ন মান প্রয়োগ করতে পারেন।

ভ্যারিয়েবলের বৈশিষ্ট্য:

  • ভ্যারিয়েবলগুলি YAML ফাইল, ইনভেন্টরি ফাইল, বা প্লেবুকের মধ্যেই ডিফাইন করা যায়।
  • এগুলি বিভিন্ন ধরনের ডেটা সংরক্ষণ করতে পারে, যেমন স্ট্রিং, লিস্ট, ডিকশনারি, ইত্যাদি।
  • প্লেবুকের ডাইনামিক আচরণ নিয়ন্ত্রণ করার জন্য ভ্যারিয়েবল ব্যবহৃত হয়, যেমন টাস্ক বা মডিউলে মান পাস করা।

ভ্যারিয়েবল কনফিগার করার পদ্ধতি:

  • ইনভেন্টরি ফাইল: আপনি ইনভেন্টরি ফাইলে হোস্টভিত্তিক ভ্যারিয়েবল ডিফাইন করতে পারেন।
  • প্লেবুকের মধ্যে: প্লেবুকের মধ্যে vars সেকশন ব্যবহার করে ভ্যারিয়েবল ডিফাইন করা যায়।
  • গ্রুপ ভ্যারিয়েবল: গ্রুপভিত্তিক ভ্যারিয়েবল ডিফাইন করা হয় group_vars ডিরেক্টরির মাধ্যমে।
  • হোস্ট ভ্যারিয়েবল: নির্দিষ্ট হোস্টের জন্য ভ্যারিয়েবল ডিফাইন করা হয় host_vars ডিরেক্টরির মাধ্যমে।

উদাহরণ:

---
- name: Example Playbook with variables
  hosts: webservers
  vars:
    apache_package: apache2
    apache_service: apache2
  tasks:
    - name: Install Apache
      apt:
        name: "{{ apache_package }}"
        state: present

    - name: Start Apache service
      service:
        name: "{{ apache_service }}"
        state: started

ব্যাখ্যা:

  • এখানে apache_package এবং apache_service নামে দুইটি ভ্যারিয়েবল ডিফাইন করা হয়েছে।
  • টাস্কগুলোতে মডিউলে এই ভ্যারিয়েবলগুলো ব্যবহার করা হয়েছে।
  • {{ }} সিঙ্কট্যাক্স দিয়ে ভ্যারিয়েবলগুলোর মান টেমপ্লেটের মতো কল করা হয়।

২. ফ্যাক্ট (Facts)

ফ্যাক্ট হলো Ansible-এর মাধ্যমে সংগ্রহকৃত সিস্টেম সম্পর্কিত তথ্য। যখনই আপনি একটি প্লেবুক চালান, Ansible স্বয়ংক্রিয়ভাবে বিভিন্ন তথ্য সংগ্রহ করে, যেমন সিস্টেমের অপারেটিং সিস্টেম, আইপি অ্যাড্রেস, মেমোরি, ডিস্ক স্পেস ইত্যাদি। এই তথ্যগুলো ফ্যাক্টস নামে পরিচিত এবং এগুলি টাস্কে ডাইনামিকভাবে ব্যবহার করা যায়।

ফ্যাক্টের বৈশিষ্ট্য:

  • ফ্যাক্ট সাধারণত স্বয়ংক্রিয়ভাবে setup মডিউল দিয়ে সংগ্রহ করা হয়।
  • এগুলি প্লেবুকের মধ্যে অ্যাক্সেস করা যায় ansible_facts ডিকশনারির মাধ্যমে, যেমন {{ ansible_facts['os_family'] }}
  • ফ্যাক্টগুলো ডায়নামিক হওয়ায় আপনি এগুলি প্লেবুক বা টাস্কে কন্ডিশন চেকিং এবং কনফিগারেশন ম্যানেজমেন্টের জন্য ব্যবহার করতে পারেন।

উদাহরণ:

---
- name: Example Playbook using facts
  hosts: all
  tasks:
    - name: Display OS family
      debug:
        msg: "The OS family is {{ ansible_facts['os_family'] }}"

    - name: Display total memory
      debug:
        msg: "The total memory is {{ ansible_facts['ansible_memtotal_mb'] }} MB"

ব্যাখ্যা:

  • ansible_facts['os_family'] ব্যবহার করে প্লেবুকটি সিস্টেমের অপারেটিং সিস্টেম ফ্যামিলি প্রদর্শন করছে (যেমন: Debian, RedHat ইত্যাদি)।
  • ansible_facts['ansible_memtotal_mb'] ব্যবহার করে প্লেবুকটি সিস্টেমের মোট মেমোরি (MB তে) দেখাচ্ছে।

সংক্ষেপে পার্থক্য:

বৈশিষ্ট্যভ্যারিয়েবল (Variables)ফ্যাক্ট (Facts)
উৎসYAML ফাইল, ইনভেন্টরি, বা প্লেবুকের মধ্যেAnsible স্বয়ংক্রিয়ভাবে সংগ্রহ করে
প্রকারব্যবহারকারী দ্বারা কাস্টম ডিফাইন করা ডেটাসিস্টেম সম্পর্কিত ডাইনামিক তথ্য
ব্যবহারপ্লেবুক, টাস্ক, টেমপ্লেট ডাইনামিক করতেপ্লেবুকে সিস্টেমের উপর ভিত্তি করে সিদ্ধান্ত নিতে
ডায়নামিক নাকি স্ট্যাটিকসাধারণত স্ট্যাটিক (কাস্টমাইজযোগ্য)স্বয়ংক্রিয় এবং সম্পূর্ণ ডায়নামিক

এই হলো Ansible এর ভ্যারিয়েবল এবং ফ্যাক্ট সম্পর্কে বেসিক ধারণা। এই দুটি উপাদান Ansible কে খুব ফ্লেক্সিবল এবং ডাইনামিক করে তোলে, যার মাধ্যমে প্লেবুক এবং টাস্ককে কাস্টমাইজ করা সহজ হয়।

ভ্যারিয়েবল কী এবং এর ব্যবহার

Ansible এ ভ্যারিয়েবল হলো এমন কিছু নাম-মান (name-value) জোড়া যা প্লেবুক বা টাস্কে ব্যবহার করা হয়, যাতে কাজগুলোকে ডাইনামিক এবং পুনরায় ব্যবহারযোগ্য করা যায়। ভ্যারিয়েবল ব্যবহার করে আপনি সহজেই প্লেবুকের বিভিন্ন অংশে পরিবর্তন আনতে পারেন এবং নির্দিষ্ট কনফিগারেশন বা সেটআপকে কাস্টমাইজ করতে পারেন।

ভ্যারিয়েবল এর ব্যবহার

Ansible এ ভ্যারিয়েবল বিভিন্ন উপায়ে ব্যবহার করা যায়:

  1. প্লেবুকের মধ্যে সরাসরি: প্লেবুকের মধ্যে vars সেকশন ব্যবহার করে ভ্যারিয়েবল সংজ্ঞায়িত করা যায়।
  2. ভ্যারিয়েবল ফাইল থেকে: হোস্ট বা গ্রুপ ভ্যারিয়েবল ফাইলে ভ্যারিয়েবল সংজ্ঞায়িত করা যায় এবং প্লেবুক থেকে তা রেফারেন্স করা যায়।
  3. কমান্ড লাইনের মাধ্যমে: প্লেবুক রান করার সময় --extra-vars (বা -e) অপশন দিয়ে ভ্যারিয়েবল পাস করা যায়।
  4. ডিফল্ট ভ্যারিয়েবল: রোল বা টাস্কের মধ্যে ডিফল্ট ভ্যারিয়েবল সেট করা যায়, যা প্রয়োজন অনুযায়ী ওভাররাইড করা যায়।

ভ্যারিয়েবল ব্যবহার করার উপায়

ভ্যারিয়েবল ডিফাইন করার জন্য YAML ফাইলে vars সেকশন ব্যবহার করা হয়।

উদাহরণ:

---
- name: Install and configure Apache
  hosts: webservers
  become: yes
  vars:
    apache_package: apache2
    apache_service: apache2
    apache_port: 80

  tasks:
    - name: Install Apache
      apt:
        name: "{{ apache_package }}"
        state: present

    - name: Start Apache service
      service:
        name: "{{ apache_service }}"
        state: started
        enabled: yes

    - name: Open firewall port
      ufw:
        rule: allow
        port: "{{ apache_port }}"

উপরের প্লেবুকে, apache_package, apache_service, এবং apache_port নামে ভ্যারিয়েবল ব্যবহার করা হয়েছে। এগুলো প্লেবুকের বিভিন্ন স্থানে মান হিসাবে রেফারেন্স করা হয়েছে।

ভ্যারিয়েবল ব্যবহারের সুবিধা

  1. পুনরায় ব্যবহারযোগ্য: একবার ভ্যারিয়েবল ডিফাইন করলে, সেটি একাধিক স্থানে ব্যবহার করা যায়, যা কোডকে DRY (Don't Repeat Yourself) নীতিতে রাখতে সাহায্য করে।
  2. সহজ কাস্টমাইজেশন: এক জায়গায় ভ্যারিয়েবলের মান পরিবর্তন করে, সহজেই প্লেবুকের বিভিন্ন অংশে প্রভাব ফেলা যায়।
  3. ডাইনামিক কনফিগারেশন: ভ্যারিয়েবল ব্যবহার করে প্লেবুককে ডাইনামিক করা যায়, যাতে বিভিন্ন হোস্ট বা পরিবেশের জন্য আলাদা মান সেট করা যায়।
  4. পরিষ্কার এবং সহজবোধ্য: প্লেবুকের কোড পরিষ্কার এবং পড়তে সহজ হয়, কারণ ভ্যারিয়েবলগুলো সাধারণত সংক্ষেপে ও বোধগম্য ভাবে ব্যবহার করা হয়।

ভ্যারিয়েবল নির্ধারণ করার পদ্ধতি

  1. প্লেবুকের মধ্যে
vars:
 variable_name: value

2. গ্রুপ বা হোস্ট ভ্যারিয়েবল ফাইলে:

  • group_vars/all.yml বা host_vars/hostname.yml ফাইলে ভ্যারিয়েবল সংজ্ঞায়িত করা যায়।

 

3. কমান্ড লাইনে:

ansible-playbook playbook.yml -e "variable_name=value"
  1. ডিফল্ট ভ্যারিয়েবল ফাইল:
    • রোলের defaults/main.yml ফাইলে ডিফল্ট ভ্যারিয়েবল সেট করা যায়, যা অন্যত্র ওভাররাইড করা যায়।

সংক্ষেপে

Ansible এ ভ্যারিয়েবল হলো প্লেবুককে ডাইনামিক, পুনরায় ব্যবহারযোগ্য, এবং কাস্টমাইজযোগ্য করার জন্য একটি শক্তিশালী উপায়। এটি প্লেবুকের কোডকে সহজবোধ্য ও পরিষ্কার রাখে এবং বিভিন্ন পরিবেশ বা কনফিগারেশনের জন্য এক্সিকিউশন প্রক্রিয়াকে নমনীয় করে তোলে।

হোস্ট ভ্যারিয়েবল এবং গ্রুপ ভ্যারিয়েবল

Ansible-এ হোস্ট ভ্যারিয়েবল এবং গ্রুপ ভ্যারিয়েবল হলো ইনভেন্টরি ফাইলের উপাদান, যা নির্দিষ্ট হোস্ট বা হোস্ট গ্রুপের জন্য কনফিগারেশন বা মান সংরক্ষণ করতে ব্যবহৃত হয়। এগুলো ব্যবহার করে আপনি বিভিন্ন হোস্ট বা গ্রুপের জন্য নির্দিষ্ট কনফিগারেশন তৈরি করতে পারেন, যা প্লেবুক চলাকালে প্রয়োগ করা হয়।

হোস্ট ভ্যারিয়েবল

হোস্ট ভ্যারিয়েবল হলো এক বা একাধিক নির্দিষ্ট হোস্টের জন্য সংরক্ষিত ভ্যারিয়েবল। এটি একটি নির্দিষ্ট হোস্টের জন্য নির্দিষ্ট কনফিগারেশন বা ডেটা প্রদান করে। আপনি ইনভেন্টরি ফাইল বা হোস্ট ভ্যারিয়েবল ফাইলে (যেমন: host_vars/hostname.yml) এই ভ্যারিয়েবলগুলো উল্লেখ করতে পারেন।

উদাহরণ

ইনভেন্টরি ফাইল:

webserver1 ansible_host=192.168.1.10 ansible_user=admin

উপরের উদাহরণে:

  • webserver1 এর জন্য IP ঠিকানা 192.168.1.10 এবং ইউজার admin হিসেবে উল্লেখ করা হয়েছে।

বা, হোস্ট ভ্যারিয়েবল ফাইল (host_vars/webserver1.yml):

---
ansible_host: 192.168.1.10
ansible_user: admin
app_port: 8080

এখানে:

  • ansible_hostansible_user হোস্টের জন্য উল্লেখিত হয়েছে।
  • অতিরিক্ত ভ্যারিয়েবল app_port উল্লেখ করা হয়েছে, যা ঐ নির্দিষ্ট হোস্টে ব্যবহৃত হবে।

গ্রুপ ভ্যারিয়েবল

গ্রুপ ভ্যারিয়েবল হলো একটি নির্দিষ্ট হোস্ট গ্রুপের জন্য সংরক্ষিত ভ্যারিয়েবল। আপনি ইনভেন্টরি ফাইলে গ্রুপের জন্য একটি সেকশন তৈরি করে ভ্যারিয়েবলগুলো উল্লেখ করতে পারেন, অথবা group_vars ডিরেক্টরির ভেতরে YAML ফাইলে এগুলো সংরক্ষণ করতে পারেন।

উদাহরণ

ইনভেন্টরি ফাইল:

[webservers]
webserver1 ansible_host=192.168.1.10
webserver2 ansible_host=192.168.1.11

[webservers:vars]
ansible_user=admin
app_port=80

উপরের উদাহরণে:

  • webservers গ্রুপের সব হোস্টের জন্য ansible_user হিসেবে admin এবং app_port হিসেবে 80 উল্লেখ করা হয়েছে।

বা, গ্রুপ ভ্যারিয়েবল ফাইল (group_vars/webservers.yml):

---
ansible_user: admin
app_port: 80
db_host: 192.168.1.100

এখানে:

  • webservers গ্রুপের সব হোস্টের জন্য ansible_user এবং app_port উল্লেখ করা হয়েছে।
  • অতিরিক্ত ভ্যারিয়েবল db_host যুক্ত করা হয়েছে, যা ঐ গ্রুপের সব হোস্টে প্রযোজ্য হবে।

ব্যবহার

হোস্ট এবং গ্রুপ ভ্যারিয়েবলগুলো Ansible প্লেবুক চলাকালে হোস্ট বা গ্রুপ ভিত্তিক কনফিগারেশন তৈরি করতে ব্যবহৃত হয়। এই ভ্যারিয়েবলগুলো ব্যবহার করে আপনি বিভিন্ন হোস্ট বা গ্রুপের জন্য বিভিন্ন কনফিগারেশন অটোমেটেড করতে পারেন, যা প্লেবুক এবং রোলগুলোর মধ্যে ব্যবহার করা হয়।

উদাহরণ প্লেবুক:

---
- name: Deploy web application
  hosts: webservers
  become: yes
  tasks:
    - name: Deploy the application
      copy:
        src: /path/to/app
        dest: /var/www/html
    - name: Configure the application port
      lineinfile:
        path: /etc/app/config
        regexp: '^port='
        line: "port={{ app_port }}"

উপরের প্লেবুকটি app_port ভ্যারিয়েবল ব্যবহার করে নির্দিষ্ট গ্রুপ বা হোস্টের জন্য কনফিগারেশন সেট করবে।

সারাংশ

  • হোস্ট ভ্যারিয়েবল: নির্দিষ্ট হোস্টের জন্য কনফিগারেশন সংরক্ষণ করতে ব্যবহৃত হয়।
  • গ্রুপ ভ্যারিয়েবল: একটি গ্রুপের সব হোস্টের জন্য সাধারণ কনফিগারেশন সংরক্ষণ করতে ব্যবহৃত হয়।

এইভাবে, হোস্ট এবং গ্রুপ ভ্যারিয়েবল ব্যবহারে আপনি আপনার ইনফ্রাস্ট্রাকচার এবং প্লেবুকের কনফিগারেশন আরও সহজে পরিচালনা করতে পারবেন।

রেজিস্টার এবং কিভাবে ফলাফল সংরক্ষণ করা হয়

Ansible এ রেজিস্টার (Register) হলো একটি ফিচার যা টাস্কের আউটপুট বা ফলাফল সংরক্ষণ করে, এবং সেই সংরক্ষিত তথ্যকে পরবর্তী টাস্কে ব্যবহার করতে দেয়। এটি প্লেবুক বা টাস্কে ডায়নামিক অবস্থা নির্ধারণ করতে এবং কন্ডিশনাল অপারেশন চালাতে অত্যন্ত কার্যকর।

রেজিস্টার (Register) এর ব্যবহার

register কিওয়ার্ড ব্যবহার করে আপনি একটি টাস্কের আউটপুটকে একটি ভ্যারিয়েবলে সংরক্ষণ করতে পারেন। সংরক্ষিত এই আউটপুট ভ্যারিয়েবলের মধ্যে বিভিন্ন ডেটা থাকে, যেমন:

  • টাস্কটি সফল হয়েছে কিনা (changed বা failed),
  • টাস্কের আউটপুট বা স্ট্যান্ডার্ড আউটপুট (stdout),
  • টাস্ক থেকে কোনো ত্রুটি বার্তা থাকলে (stderr),
  • এবং আরো অনেক কিছু।

রেজিস্টার এর উদাহরণ

---
- name: Example of register usage
  hosts: localhost
  tasks:
    - name: Check if a file exists
      stat:
        path: /etc/passwd
      register: file_check

    - name: Display file existence
      debug:
        msg: "File exists: {{ file_check.stat.exists }}"

ব্যাখ্যা:

  1. প্রথম টাস্ক: stat মডিউল ব্যবহার করে /etc/passwd ফাইলটি আছে কিনা তা চেক করা হচ্ছে এবং এর ফলাফল file_check ভ্যারিয়েবলে সংরক্ষণ করা হচ্ছে।
  2. দ্বিতীয় টাস্ক: debug মডিউল ব্যবহার করে file_check ভ্যারিয়েবল থেকে stat.exists এর মান যাচাই করা হচ্ছে, যাতে ফাইলটি আছে কিনা তা জানা যায়।

রেজিস্টার করা ফলাফল ব্যবহার করা

register দিয়ে সংরক্ষিত ভ্যারিয়েবলের মাধ্যমে আপনি পরবর্তী টাস্কে কন্ডিশনাল লজিক প্রয়োগ করতে পারেন, যেমন:

  • when কন্ডিশন ব্যবহার করে।
  • আউটপুট থেকে নির্দিষ্ট ডেটা টেনে ব্যবহার করা।

উদাহরণ:

---
- name: Conditional task based on register result
  hosts: localhost
  tasks:
    - name: Check if a file exists
      stat:
        path: /etc/passwd
      register: file_check

    - name: Create a file if it does not exist
      file:
        path: /tmp/example.txt
        state: touch
      when: not file_check.stat.exists

ব্যাখ্যা:

  • প্রথম টাস্কে /etc/passwd ফাইলটি চেক করা হয়েছে এবং ফলাফল file_check তে সংরক্ষণ করা হয়েছে।
  • দ্বিতীয় টাস্কটি তখনই চালানো হবে যখন file_check.stat.exists false হবে, অর্থাৎ /etc/passwd ফাইলটি যদি না থাকে। এটি when কন্ডিশন দিয়ে চেক করা হয়েছে।

রেজিস্টার করা ফলাফল থেকে গুরুত্বপূর্ণ ফিল্ড

রেজিস্টার করা ভ্যারিয়েবলের মধ্যে বেশ কিছু সাধারণ ফিল্ড থাকে যা টাস্কের আউটপুট এবং স্ট্যাটাস সংরক্ষণ করে:

  • stdout: টাস্কের স্ট্যান্ডার্ড আউটপুট (text আকারে)।
  • stderr: ত্রুটির আউটপুট (যদি কোনো ত্রুটি ঘটে)।
  • changed: টাস্কটি চালানোর পর যদি কোনো পরিবর্তন হয়, তাহলে এটি true হবে।
  • failed: টাস্কটি ব্যর্থ হলে এটি true হবে।
  • rc: টাস্কের রিটার্ন কোড।
  • stdout_lines: স্ট্যান্ডার্ড আউটপুটের প্রতিটি লাইন আলাদা করে একটি লিস্ট হিসেবে সংরক্ষণ করে।

একটি উদাহরণ যেখানে টাস্কের আউটপুট থেকে নির্দিষ্ট মান সংরক্ষণ করা হচ্ছে:

---
- name: Command output register example
  hosts: localhost
  tasks:
    - name: Run a shell command
      command: echo "Hello, Ansible!"
      register: command_output

    - name: Display the command output
      debug:
        msg: "The command output was: {{ command_output.stdout }}"

ব্যাখ্যা:

  • প্রথম টাস্কে একটি শেল কমান্ড চালানো হয়েছে এবং আউটপুট command_output ভ্যারিয়েবলে সংরক্ষণ করা হয়েছে।
  • দ্বিতীয় টাস্কে debug মডিউল দিয়ে সেই আউটপুট দেখানো হয়েছে {{ command_output.stdout }} এর মাধ্যমে।

সংক্ষেপে:

  • register ব্যবহার করে আপনি টাস্কের আউটপুট একটি ভ্যারিয়েবলে সংরক্ষণ করতে পারেন।
  • সংরক্ষিত আউটপুট পরবর্তী টাস্কে ডায়নামিকভাবে ব্যবহার করা যায়।
  • আপনি আউটপুটের বিভিন্ন ফিল্ড (যেমন stdout, stderr, changed) ব্যবহার করে প্লেবুকে কন্ডিশন চেকিং করতে পারেন।

এই ভাবে register এবং এর সাথে সংরক্ষিত ফলাফল ব্যবহার করে Ansible Playbook কে আরো ডায়নামিক এবং ফ্লেক্সিবল করা যায়।

Ansible এ Facts এবং gather_facts হলো এমন উপাদান যা মেশিন বা হোস্টের সিস্টেম ইনফরমেশন সংগ্রহ ও ব্যবহার করতে সাহায্য করে। এগুলো প্লেবুকের কার্যকারিতা ও ডাইনামিক কনফিগারেশনে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে।

Facts কী?

Facts হলো মেশিন বা হোস্ট সম্পর্কে বিভিন্ন তথ্য যা Ansible স্বয়ংক্রিয়ভাবে সংগ্রহ করে। এগুলোর মধ্যে অন্তর্ভুক্ত রয়েছে:

  • অপারেটিং সিস্টেম সম্পর্কিত তথ্য (নাম, ভার্সন ইত্যাদি)
  • নেটওয়ার্ক কনফিগারেশন (আইপি অ্যাড্রেস, ইন্টারফেসের নাম ইত্যাদি)
  • সিপিইউ ও মেমোরি ইনফরমেশন
  • ডিস্ক স্টোরেজ ইনফরমেশন
  • বিভিন্ন সিস্টেম সেটিংস ও কনফিগারেশন

Ansible এর setup মডিউল ডিফল্টভাবে এই ফ্যাক্টগুলো গ্যাদার করে এবং এগুলোকে প্লেবুকে ব্যবহার করার সুযোগ দেয়।

gather_facts কী?

gather_facts হলো একটি প্যারামিটার যা প্লেবুকে সেট করা হয়, এবং এটি নির্দেশ করে যে Ansible প্লেবুক রান করার সময় হোস্ট বা মেশিন থেকে ফ্যাক্টস সংগ্রহ করবে কি না। ডিফল্টভাবে, এটি yes বা true হিসেবে সেট করা থাকে, তাই Ansible স্বয়ংক্রিয়ভাবে ফ্যাক্টস গ্যাদার করে।

gather_facts এর উদাহরণ

---
- name: Gather facts example
  hosts: all
  gather_facts: yes

  tasks:
    - name: Display OS information
      debug:
        msg: "The operating system is {{ ansible_distribution }} and version is {{ ansible_distribution_version }}"

উপরের উদাহরণে, gather_facts: yes থাকায় Ansible হোস্ট থেকে ফ্যাক্টস গ্যাদার করবে এবং ansible_distributionansible_distribution_version ফ্যাক্টসের মাধ্যমে অপারেটিং সিস্টেম ও এর ভার্সনের তথ্য প্রদর্শন করবে।

gather_facts এর মান no বা false করা

কিছু ক্ষেত্রে আপনি ফ্যাক্টস গ্যাদার করতে না চাইলে gather_facts: no বা false সেট করতে পারেন। এটি প্লেবুক এক্সিকিউশনকে দ্রুততর করতে পারে যদি ফ্যাক্টসের প্রয়োজন না থাকে।

---
- name: Playbook without gathering facts
  hosts: all
  gather_facts: no

  tasks:
    - name: Simple task
      debug:
        msg: "This is a simple task without gathering facts."

Facts ব্যবহার করার সুবিধা

  1. ডাইনামিক কনফিগারেশন: ফ্যাক্টসের মাধ্যমে আপনি হোস্টের বর্তমান অবস্থা বুঝতে পারেন এবং প্লেবুকে সেই অনুযায়ী শর্ত (condition) প্রয়োগ করতে পারেন।
  2. কাস্টমাইজেশন: বিভিন্ন হোস্টের কনফিগারেশন অনুযায়ী টাস্ক বা কনফিগারেশন পরিবর্তন করতে পারেন, যেমন: যদি কোনো হোস্টে একটি নির্দিষ্ট অপারেটিং সিস্টেম থাকে, তাহলে সেই অনুযায়ী টাস্ক রান করা।
  3. সহজ ডিবাগিং: ফ্যাক্টস ব্যবহার করে আপনি সহজে জানতে পারেন কোনো মেশিনের সিস্টেম ইনফরমেশন, যা ডিবাগিং বা সমস্যা সমাধানের ক্ষেত্রে সহায়ক হতে পারে।

সাধারণ ফ্যাক্টস

ফ্যাক্টবিবরণ
ansible_distributionহোস্টের অপারেটিং সিস্টেমের নাম
ansible_distribution_versionঅপারেটিং সিস্টেমের ভার্সন
ansible_hostnameহোস্ট মেশিনের নাম
ansible_all_ipv4_addressesসমস্ত IPv4 অ্যাড্রেস
ansible_processorপ্রসেসরের তথ্য
ansible_memory_mbমেমোরি (RAM) সম্পর্কিত তথ্য

ফ্যাক্টস ব্যবহার করার উদাহরণ

---
- name: Example playbook using facts
  hosts: all
  gather_facts: yes

  tasks:
    - name: Display IP address information
      debug:
        msg: "The IP addresses are: {{ ansible_all_ipv4_addresses }}"

    - name: Check if the OS is Ubuntu
      debug:
        msg: "This is an Ubuntu system."
      when: ansible_distribution == "Ubuntu"

এখানে, ansible_all_ipv4_addresses ব্যবহার করে হোস্টের সমস্ত IPv4 অ্যাড্রেস প্রদর্শন করা হয়েছে এবং when শর্ত ব্যবহার করে চেক করা হয়েছে হোস্টের অপারেটিং সিস্টেম Ubuntu কিনা।

সংক্ষেপে

  • Facts: হোস্টের সিস্টেম ইনফরমেশন যা Ansible স্বয়ংক্রিয়ভাবে গ্যাদার করে এবং প্লেবুকে ব্যবহার করা যায়।
  • gather_facts: Ansible প্লেবুক চালানোর সময় ফ্যাক্টস গ্যাদার করবে কি না, তা নির্ধারণ করে। ডিফল্টভাবে এটি yes থাকে।

Facts এবং gather_facts এর সঠিক ব্যবহার করে আপনি আপনার Ansible প্লেবুককে আরও কার্যকরী, কাস্টমাইজড এবং ডাইনামিক করতে পারেন।

Promotion